40年前的协议战争,对区块链有什么启示?
我们熟悉阿里巴巴、腾讯、字节跳动所代表的成功的商业故事。我们知道微信、淘宝、抖音是怎样成为全民爆款的产品。这些案例离消费者触手可及,它们在各自的领域里过关斩将,最终成为了人们生活必不可少的一部分。这些故事是漂浮在水面的冰山,我把它们称之为应用层的战争。
还有一种故事,藏在海平面下,体积比水上的巨大得多,意味着它们的影响更深远、更辽阔,但因为不直接面向消费者,往往不为人知。我把它称之为协议层的战争。协议层是应用层之所以存在的基础。
就像应用需要获取用户、占领市场一样,底层协议想要成为最终的赢家,也需要占领自己的用户——大部分是开发者——的心智。但协议层的战争又跟应用层很不一样,并不是砸钱做推广就可以搞定,很多时候,协议层需要以开源的形式,去赢得更多的信任,因为它们需要建立的不仅是市场,还有生态。
生态和市场有什么不一样?打个比方,应用层战争就像是两个生意对手在广场上建立一家商店,互相争夺吸引镇上顾客光临自家商店。而协议层战争更像是两个宗教互相竞争,谁能号召更多的人成为信徒,谁能鼓动更多信徒在镇上建造更多的教堂,谁才是最后的赢家。
区块链正处于协议层战争的早期阶段,目前为止还没有产生通吃一切的大赢家。每条公链都在尝试建立自己的生态,比特币和以太坊走在了最前面,身后跟着许许多多中小型的项目;DeFi 成为了智能合约主流的叙事和应用方向,稳定币 Maker 走在了前面,身后还有其他种类繁多的DeFi 协议,它们每个都希望成为去中心化金融的基础拼图,金融乐高中最底层的积木。
这里面每天都在产生大量的创新,也有大量的竞争。橙皮书和这个行业里的其他人一样,我们也在试图思考那个最重要的问题:哪些协议会最终胜出?应该把手中的赌注,押在哪只赛马身上才能笑到最后?越想知道这个问题的答案,思绪好像就越乱成一团。
就像上文所说的,协议层的战争跟我们所熟悉的应用层战争并不一样。好在历史或许能给我们一些帮助,因为协议层战争其实已经发生过一次了。在互联网协议刚诞生的上古时期,如何把全世界的电脑连接成一个网络,同样面临着不同协议的竞争。最终我们知道,TCP/IP 协议获得了胜利。
但互联网的这场协议战争到底是怎么样的?它对今天区块链领域的战争又有什么样的启示?这篇文章尝试着回答下这两个问题。
40年前的协议战争
在互联网的大目标上,所有人都达成了共识:要建立一个全球性的计算机网络。但是具体如何实现这个目标,他们意见各不相同。到20世纪80年代初,有几个不同的协议开始相互竞争。
在欧洲电话垄断巨头和大多数政府的支持下,OSI协议受到了当时更多人的青睐。其他强有力的竞争对手还包括两个企业内部的网络协议,IBM SNA 和 DEC DECNET。我们今天所熟知的互联网协议(TCP/IP协议)是当时这场协议战争中的黑马,它只由一个依靠志愿者的自治社区来支持。
但是互联网协议的这个自治社区动作非常敏捷快速,他们在几个月内的时间里,开发进度就赶上了 OSI 委员会耗费数年取得的进展。不过,互联网协议却吓跑了一些潜在的使用者,因为这里似乎没有人为之“负责”。
——计算机历史纪念馆[1]
协议和标准的不一致,到底会产生都多大的问题?当时的情况类似于,我们已经可以把全世界的电脑都连起来了,就像所有人家里都配备了电话,但是因为协议和标准的不同,每个人接电话讲的却是不同的语言,因此互联互通仍然无法实现。
因为无法统一标准,想把不同协议的电脑连成网络,实操的难度和麻烦非常大。思科公司(专门生产用于连接计算机网络系统的设备和软件)有这样一件文化衫,上面罗列了当时他们能支持的网络协议,而这些网络协议只是当时所有网络协议的一部分。
互联网协议的三个主要竞争对手
DECNET
DECNET 是一个受欢迎的网络系统架构,但它是私有的,因此没有被标准组织和政府客户所采用。从1987年12月开始,DECNET 从 DEC 自己的协议转移到了 OSI 标准的协议,OSI 协议最终又输给了TCP/IP。
SNA
SNA 诞生于1974年,是 IBM 的专有网络体系,一开始是专门用来连接大型机和类似电传打字机、显示器这样的计算机外围设备的,后来又扩展到连接其他计算机上。SNA 最初是固定不变与分层的设计,最后变得更加灵活。SNA 协议在大公司内部主宰了几十年的地位。
OSI
OSI 是互联网协议的直接竞争对手。OSI 是一个定义良好的、受到各国政府与学界支持的、受益于 XNS 与其他协议的例子。但它最终受困于过多的复杂性,一直没能推出能实际运行的代码。
OSI 与 TCP/IP
这场协议战争的重头戏,无疑属于 OSI 与 TCP/IP。工程师、机构组织和国家在谁能成为最好、最强壮的计算机网络标准这个问题上达成了非常明显的两极化,两套标准都是开放和非专利占有的,但彼此又互不兼容。
OSI 想要为计算机网络创造一系列复杂全面的标准,设计 OSI 的架构师由一群来自英国、法国和美国的计算机行业的杰出代表组成,他们畅想设计一套完整的、开放的、分为多层的系统,让全世界的用户可以轻松的交换数据,为商业协作创造新的可能性。 在很长一段时间里,这个愿景看起来都是正确的。OSI 也因此获得了几乎所有重要人员的支持:计算机企业、电信公司、监管部门、国家政府、国家标准制定机构、学术研究人员,甚至是来自投资了竞争对手 TCP/IP 协议的美国国防部的支持。包括 IBM 在内的大型计算机企业也在 OSI 身上投入了大量的资金。在1980年代中期,OSI 标准在全世界普及似乎是命中注定、不可避免的。
但是,到了1990年代早期,OSI 万事俱备,发展速度却远远落后于另一种更便宜、更敏捷、更不全面的协议:互联网 TCP/IP 协议群。OSI 步履蹒跚、速度缓慢,而 TCP/IP 却一路向前狂奔,人们因此发出这样的感叹:OSI 是一个美丽的梦想,但 TCP/IP 已经梦想成真了。
OSI 一开始就是定位于跨国际的、全球性的工作,从1978年开始,到1980年开发陆续发布草案,到1984年最终 OSI 模型正式发布,都是跨国际的工作组,这一点从委员会和架构师的组成人员也可以看出。
而在1980年代 NSF 获得掌控权之前,TCP/IP 甚至从来就没有被当作过网络全球标准采用的候选者。一直到1989年,成套的协议群在 RFC 1122[2] 和 RFC 1123[3] 被提出,TCP/IP 才为成为一套全面完整的协议套件设立了基础,最终发展成了现在人们所熟悉的 Internet protocol suite[4]。
为什么 TCP/IP 这匹黑马能战胜当时的大热门 OSI ,成为互联网协议的大赢家呢?有这么几个方面的说法。
TCP/IP 获胜的原因
理念与文化方面
在开发 TCP/IP 协议的时候,互联网工程师们习惯于在流动的组织形式中持续不断的做实验。他们觉得 OSI 委员会是一个过度官僚化的、 不接地气、高高在上的组织,从不触碰任何现有的网络系统和计算机。这使得互联网社区逐渐远离了 OSI 模型。
有一件小事可以反应这种文化的不同。在1992年的 IETF 会议( Internet Engineering Task Force[5])上, Vint Cerf(TCP/IP的领导者之一)在一次争吵中直接穿着西装跳起了脱衣舞,露出里面的T恤,T恤中间印着 IP on Everything 的字样。Cerf 称自己这个行为是为了强调互联网的目标是让一切都运行在IP地址上。
Vint Cerf 认为,早期在 ARPANET 中形成的这种社区文化,与技术因素一样重要,因为正是这种文化能让互联网的治理能力快速去跟随并适应协议的规模和发展。
此外,还有人总结,赢得互联网市场的公司,比如思科,都是小公司。因为它们拥抱了互联网的文化,对这种文化感兴趣,并且特别重要的是,它们能参加 IETF 的组织和会议。
在1992年的一次演讲中,David Clark 这样描述 IETF 这个组织的运作方式:
We reject kings, presidents and voting. We believe in rough consensus and running code.
我们不要国王、总统和投票。我们只相信“粗略的共识”和“能够运行的代码”。
“粗略的共识”和“能够运行的代码”可能是 IETF 最重要的特征。一个大项目,比如发明一个新的网络,通常是从上到下进行设计的,由公司或所属机构参与。而年轻的ARPA网和互联网社区则通过自下向上的风格完成自我进化,这种方式富有生产力,却并非结构化的团体协作。
参与者通常自己解决问题,然后把他们的解决方案贡献到 RFC(request for comment) 中。最好的 RFC 又变成了社区认可的统一标准。这种精英式的、同行评审的方法,与科学研究的过程非常类似。这种随心所欲的风格也为后来的一些项目提供了模版,包括 Web 和开源社区。
作为对比,在 OSI 那边,一个新的技术想要成为国际标准,每个方案都必须经过如下四个步骤:首先是先提出一个工作草案,然后再提出一个国际标准草案的提议,然后是变成国际标准草案,最后才是成为国际标准。在 OSI 中建立共识和相关标准,往往需要牵涉一大堆额外的涉及全体成员和委员会的会议。
OSI 的第一次全体会议整整持续了三天时间,从1978年2月28日开到了3月2日,参与者包括数十名来自10个国家的代表,以及从四个国际组织中挑选出的观察者。每个人在参会时都带着自己的市场利益保护心态,带着自己的项目来推广。
技术方面
许多人对 OSI 的复杂技术感到挫败和沮丧。OSI 定义了7层的模型,有人认为7层太多了,特别是传输层(5层,对比TCP/IP只有2层)过多,而每一层的严格定义被TCP/IP协议的拥护者认为是不高效的,不允许提高性能的trade-off。并且,OSI 在网络层同时定义了数据报和虚拟电路两种方法,而它们彼此是不具备互操作性的。
康奈尔大学的研究人员认为[6],OSI 失败的原因之一是它试图对所有东西都进行标准化,OSI 委员会试图控制网络中的一切。在缺少具备指导意义的操作经验的情况下,OSI 一直不断添加越来越多的功能。而早期的 TCP/IP 的技术理念则更为实用,它的座右铭是“粗略的共识和能够运行的代码”,TCP/IP 只是指定了网络和传输协议,它没有尝试去定义底层的网络技术,而上层的技术,比如电子邮件等应用程序的协议,则一直等到出现了可运行的代码之后,有了实践的经验和需要才开始被标准化。
实践与商业应用方面
除了技术,在实际应用方面,TCP/IP 一个成功的关键是决定将协议包含在 Unix 系统的Berkeley标准发行版(BSD)中。这也是由ARPA资助的。1983年发布的BSD 4.2,配备了完整的 TCP/IP 协议群,而且代码都是开源的。这些代码很快被移植到了很多其他操作系统中,成了第一代互联网的基础。
ARPA 和电信行业建立了商业伙伴关系,也进一步推动了 TCP/IP 的传播和采用。欧洲核子研究组织(CERN)[7]在1984年至1988年之间为其内部网购买了带有TCP/IP的UNIX计算机。1988年,欧洲 UNIX 网络 EUnet[8] 也宣布转移到 TCP/IP 协议上。
尽管如此,当时很多人依然认为应该与欧洲其他国家一起继续开发 OSI 协议,而非选择 ARPA。他们为自己所做的事情感到骄傲,并不是出于民族自豪感或者反对美国,而是认为自己在做正确的事。这种心态慢慢转化为了一种宗教教条。
此外,当时的 ARPA Internet 仍然是一个研究项目,不允许商业流量或营利性服务出现。美国商务部要求遵守 OSI 协议的标准,而美国国防部也计划从 TCP/IP 协议过渡到 OSI 协议。当时美国许多大学也抱着同样的心态,在校园网的选择上他们先使用 TCP/IP 协议,想着等到后面再迁移到 OSI 协议去。一些欧洲国家和 EEC 也批准了 OSI 协议,成立了RARE[9]来推广OSI协议[10],并且限制了对非OSI兼容协议的投资。
但是,到了1989年,OSI 协议的倡导者 Brian Carpenter 在一个技术会议上发表了题为《OSI是否已经太晚了?》的演讲,这次演讲受到了热烈的掌声和欢迎。它表明,虽然 OSI 已正式定义完成,但与 OSI 相关的计算机制造商的产品和PTT的网络服务产品却还在苦苦等待开发中。
相比之下,TCP/IP 一直就不是官方标准(它是在非官方的RFC[11]中定义的),但是自1983年以来,TCP/IP 已经提供了同时包含以太网[12]和TCP/IP协议的UNIX[13]工作站。
1990年,欧洲核子研究组织与美国康奈尔大学建立了跨大西洋的TCP/IP链接,欧洲一些国家和组织的学术机构已经采用或表示接受TCP/IP协议。1991年1月在卢瑟福实验室[14]里,DECnet 占了75%的流量,这归功于VAXs[15]之间的以太网[16]。而 IP 协议则是第二大流行的协议,拥有近 20% 的流量,这主要归功于UNIX计算机,“ IP是自然的选择”。
在中央计算部新闻通讯中,卢瑟福实验室通信与小型系统主管 Paul Bryant 这样写道:“经验表明,与SNA等系统相比,IP系统非常易于安装和使用,而 X.25 和彩色书协议等系统则比较复杂”,他还写道:“美国学术流量的主要网络现在是基于IP协议的。IP协议最近在欧洲因站点间流量而变得流行。随着这种方法的出现,大型组合的美国/欧洲网络对英国用户来说具有很大的吸引力。“
当时,很多人也有类似的看法。在欧洲核子研究中心, FrançoisFlückiger表示:[17] “该技术简单,高效,已集成到UNIX类型的操作系统中,并且对用户的计算机没有任何影响。最早将路由器商业化的公司(例如Cisco)看起来运行得很健康并且供应良好,最重要的是,用于本地校园网络和研究中心的技术也可以用于以简单的方式互连远程中心。”
TCP/IP 在这场协议战争中取得胜利的另一个关键点,发生于 1989 年,Tim Berners-Lee[18] 在欧洲核子研究中心发明了万维网[19]。万维网作为互联网上的应用程序,最终为互联网带来了许多社会和商业用途。
互联网在1993-1994年开始进入人们的日常使用。NSFNET 在1991年更改了其政策以允许商业通信,并在1995年被关闭,取消了对使用互联网进行商业通信的最后限制。随后,Internet骨干网[20]由商业Internet服务提供商提供[21]。互联网变得无处不在。
对区块链的启示
这段历史对今天区块链的格局有什么样的参考意义呢?上一场协议战争能为今天发生在区块链领域里的协议战争带来怎样的启发?
建立正确的组织形式和社区文化
所有人都知道“开放”是最重要的,但具体到社区文化和组织形式上仍然会有差异。OSI 从一开始就定位于跨国的全球性工作组,也融入了许多开放性多样化的社区人员,但最后它却变成了一个不同利益方互相追逐的混乱公地。
IBM 作为 OSI 中非常重要的一股力量,因为对自己已有业务利益的维护,在基于数据报的包交换(Packet switching)日益流行的情况下,依然选择维护仿虚拟电路交换的方案,正是这种不同利益方的弊端。
所以,对于很多区块链项目来说,践行开放开源的理念一定要找对方向。RFC 在 TCP/IP 协议的制定上起到了非常重要的角色,今天,区块链项目在推动技术发展、新协议和新标准上也应该有类似的方案。
以太坊应该是一个很不错的模版,社区文化所赋予的创造力是显而易见的,橙皮书之前写过相关的文章介绍《专访Vitalik:社区远比代码更重要》。而反观 Facebook 主导的 Libra 项目,几乎很难被人看好,在我看来,它类似于 OSI 的组织形式,由一家既得利益者的巨头企业主导,试图拉拢其他行业里的头部力量,我认为在怎样协调各成员的利益上,Libra 需要面临与 OSI 相同的难题。我在心里甚至认为,Libra 注定是要失败的。
不要过分纠结理念,先让代码跑起来
“粗略的共识,可运行的代码”——这句话是 TCP/IP 协议工作组的座右铭。换作在区块链行业里,我觉得类似的道理是,不要太过于纠结原教旨主义的理念,比如去中心化,也不要过早开始考虑怎样把项目过渡给社区接管,或者是在追求通过投票的方式完成项目的升级和进化、追求链上治理的方向上浪费太多力气。
因为这些事情也许都远不如让代码和协议能先跑起来、运行起来,来得更重要。这世界不缺理念正确的人,缺的是跑得足够快的人。其实类似的建议橙皮书之前也写过许多:《区块链应用层需要拿破仑》。
不要追求完美的协议
OSI 与 TCP/IP 的竞争,最直接的一个教训是,世界上并不存在完美的协议。在区块链行业里,我看到不少项目方都在追求这种完美主义,或者不是追求,而是在以这种完美主义作为故事宣传自己的项目。
就公链这种大型基础设施而言,所有人都希望得到一个完美的解决方案,既能扩容、又去中心化、不用浪费电力、还能顺带解决跨链问题,既能跑DeFi,又能玩菠菜。想用一条链的技术,一次性解决这些问题是不可能的。要相信有用的协议最终都会逐渐得到补全、成为完整的协议群和协议栈,不要一开始就寄希望于发明一套完美的协议。从这个角度来说,似乎 Cosmos 的策略要比波卡更好。
如果你做了一个协议,这个协议能为开发者解决什么样的实际需求才是最重要的,不同的协议可以组合成协议栈,成为日后不可或缺的积木。而最简单的协议,往往最有可能率先存活下来。比如 Uniswap、0x、Compound。
这方面,同样的,橙皮书之前其实也写过类似的观点:《BTC与ETH:定位的胜利》。
尽早让协议传播开来
最后一点,是让协议尽可能得到传播。
让协议传播有两种方法,一是找到传播的载体,借着某些必要的工具和产品得到推广和普及。
就像 TCP/IP 协议最早是搭载 UNIX 系统而得到传播一样,区块链协议也应该尽可能去寻找这样利于传播的载体,让你的协议尽早可以被开发者使用上。
另一种方法是,让协议产生有影响力的产品和应用,借着应用的普及而使底层协议得到普及。就像万维网建立在 TCP/IP 的基础上一样,万维网吸引了许多圈外的人使用互联网,最终也壮大了 TCP/IP 协议的发展。
以太坊,在我看来,它就率先为开发者提供了一套可编程的智能合约的功能。过去几年我不断听到有人对以太坊的智能合约以及solidity语言的批评,常见的批评观点是,以太坊没有必要提供一个图灵完备的智能合约功能,不是所有代码都需要放到链上,也没必要专门为编写 Dapp 发明一套新的语言。
这些观点当然都是正确的。但现实是,以太坊用智能合约这个最容易理解的概念先占领了开发者的大脑,它可能不是最完美的,但它率先得到了传播,那些掌握正确观点的人反而需要从头开始追赶以太坊领先的步伐。
最后
如果橙皮书是一家投资基金,我们该如何选择投资什么样的区块链协议?
TCP/IP 的历史告诉我们,应该选择那些信奉“粗糙的共识与可运行的代码”的项目,橙皮书想要投资的,应该是拥有这种社区文化的协议。
让我们把这种社区文化,再次重申一遍:
We reject kings, presidents and voting. We believe in rough consensus and running code.
(完)
参考来源:
https://www.computerhistory.org/revolution/networking/19/376[22]
https://en.wikipedia.org/wiki/Protocol_Wars[23]
https://spectrum.ieee.org/tech-history/cyberspace/osi-the-internet-that-wasnt[24]
http://www.cs.cornell.edu/wya/AcademicComputing/text/nationalnets.html[25]
计算机历史纪念馆: https://www.computerhistory.org/revolution/networking/19/376
[2]1122: https://tools.ietf.org/html/rfc1122
[3]1123: https://tools.ietf.org/html/rfc1123
[4]Internet protocol suite: https://en.wikipedia.org/wiki/Internet_protocol_suite
[5]Internet Engineering Task Force: https://en.wikipedia.org/wiki/Internet_Engineering_Task_Force
[6]康奈尔大学的研究人员认为: http://www.cs.cornell.edu/wya/AcademicComputing/text/nationalnets.html
[7]欧洲核子研究组织(CERN): https://en.wikipedia.org/wiki/CERN
[8]EUnet: https://en.wikipedia.org/wiki/EUnet
[9]RARE: https://en.wikipedia.org/wiki/TERENA#History
[10]OSI协议: https://en.wikipedia.org/wiki/OSI_protocols
[11]RFC: https://en.wikipedia.org/wiki/Request_for_Comments
[12]以太网: https://en.wikipedia.org/wiki/Ethernet
[13]UNIX: https://en.wikipedia.org/wiki/Unix
[14]卢瑟福实验室: https://en.wikipedia.org/wiki/Rutherford_Appleton_Laboratory
[15]VAXs: https://en.wikipedia.org/wiki/VAX
[16]以太网: https://en.wikipedia.org/wiki/Ethernet
[17]FrançoisFlückiger表示:: https://en.wikipedia.org/wiki/Fran%C3%A7ois_Fl%C3%BCckiger
[18]Tim Berners-Lee: https://en.wikipedia.org/wiki/Tim_Berners-Lee
[19]万维网: https://en.wikipedia.org/wiki/World_Wide_Web
[20]Internet骨干网: https://en.wikipedia.org/wiki/Internet_backbone
[21]Internet服务提供商提供: https://en.wikipedia.org/wiki/Internet_service_provider
[22]https://www.computerhistory.org/revolution/networking/19/376: https://www.computerhistory.org/revolution/networking/19/376
[23]https://en.wikipedia.org/wiki/Protocol_Wars: https://en.wikipedia.org/wiki/Protocol_Wars
[24]https://spectrum.ieee.org/tech-history/cyberspace/osi-the-internet-that-wasnt: https://spectrum.ieee.org/tech-history/cyberspace/osi-the-internet-that-wasnt
[25]http://www.cs.cornell.edu/wya/AcademicComputing/text/nationalnets.html: http://www.cs.cornell.edu/wya/AcademicComputing/text/nationalnets.html